import 'dart:io';

import 'package:note/common/common.dart';
import 'package:note/manager/global.dart';
import 'package:note/manager/hiveUtils.dart';
import 'package:note/models/noteModel.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:path_provider/path_provider.dart';

import '../common/tools.dart';

class InitApp {
  static InitApp? _instance;

  InitApp._internal();

  static InitApp getInstance() {
    _instance ??= InitApp._internal();
    return _instance!;
  }

  static Future<void> init() async {
    Tools.setSystemTopUI();
    await HiveUtil.install();
    await HiveUtil.getInstance();
    GlobalUtil.getInstance();

    ///初始化笔记
    final notes = HiveUtil.noteBox.values;
    for (Note item in notes) {
      GlobalUtil.noteList.add(item);
      if (item.isFavorite) {
        GlobalUtil.favoriteNum.value += 1;
      }
    }
    GlobalUtil.sortNote();

    ///初始化设置
    GlobalUtil.getAppSet();

    ///获取当前版本信息
    GlobalUtil.packageInfo = await PackageInfo.fromPlatform();

    ///获取app最新版本
    Tools.checkVersion();

    ///获取项目文件夹
    Directory? path;
    if (Platform.isAndroid) {
      // 在 Android 平台上使用 getExternalStoragePath
      path = await getExternalStorageDirectory();
      // 处理外部存储路径
      // ...
    } else if (Platform.isIOS) {
      // 在 iOS 平台上执行其他逻辑或使用其他方法
      path = await getApplicationDocumentsDirectory();
      // ...
    }
    FilePath.getAppDirectory = path?.path ?? '';
    FilePath.getNoteImageDirectory = '${FilePath.getAppDirectory}/noteImage';
    // 检查目标文件夹是否存在，如果不存在则创建
    Directory destinationDir = Directory(FilePath.getNoteImageDirectory);
    if (!destinationDir.existsSync()) {
      destinationDir.createSync(recursive: true);
    }
  }
}
